home *** CD-ROM | disk | FTP | other *** search
- This file gives brief details of the installable filesystem minix.xfs version
- 0.60.
-
- This driver works with both V1 and V2 filesystems, so if you are using minix
- 1.6.xxx with the new V2 filesytem then it should handle them OK. pl5++ should
- be able to cope with any sector size: see pl5.doc for more info.
-
- If minix.xfs will access your minix partitions on your setup OK then skip
- the next paragraph.
-
- If you can't access partitions then it is possible that your driver
- software wont access them. The partition type must be GEM (sorry but it's a bit
- awkward to access non-GEM partitions). Also the sector size on the minix
- partitions must be either 1K or 512 bytes (as well as the extended Rwabs call
- being mandatory for very large V2 partitions). If both of these are OK then
- maybe the driver software doesn't like the boot sector of your minix
- partitions. There are two solutions to this, described in greater detail
- in 'minit.doc'. If you have minix filesystems on GEM partitions and the
- 'fixup' program still wont permit access to your partitions with minix.xfs then
- please let me know, giving details of your setup.
-
- Now this version of minixfs uses all of the new features in MiNT ... hardlinks
- symbolic links chmod,chown etc. Symbolic links may cause trouble, if you have
- minix and try 'fsck' on them ... plain minix doesn't understand symbolic links
- and fsck will try to delete them. Note: an older symbolic link package for
- minix stuffed all the info in the inodes ... this wont work with minix.xfs .
- I think there is a newer symlinks package that does work. However the package
- must use the same mode for symbolic links, the default value is 0160000 edit
- either minixfs or the minix symlinks package so that the two agree and
- recompile as appropriate. Now about fsck ... if you are using minix 1.6.xxx then
- the new fsck will handle symlinks correctly if you add the flag
- -DI_SYMBOLIC_LINK=0160000 when you compile it. If aren't running 1.6.xxx
- then apply 'fsck.dif' (with patch) to the old minix fsck.c . 'fsck.dif' should
- be supplied with this filesystem driver. Keep the old fsck source though for
- upgrades. Note the dif assumes that the version of fsck you are using is the
- one with minix 1.5.10 (or 1.5 if its 'out of the box' and hasn't been upgraded
- from 1.1 ). The file should have crc 25152 (before patching) and 24070 after.
-
- File locking has been added for this version, it has not been extensively
- tested so be careful !
-
- Filename translation has been overhauled for this version. See the fscntl
- section for details.
-
- Another potentially useful feature is supported by this version, you can
- have longer filenames if you initialise the filesystem properly. Currently
- this can only be done by wiping existing partitions. Also minix itself wont
- recognise this new format, though it may be possible to persuade it, I
- haven't tried this myself.
-
- Several fscntl options exist for varous purposes. The constants are defined in
- minixfs.h .
-
- MFS_VERIFY, this is intended to check if the partition is minix, the value
- MFS_MAGIC will be sent to the long argument 'arg' points to.
-
- MFS_SYNC, sync the filesystem in a manner similar to the unix sync() sys call.
- Minixfs does however sync the filesystem at regular intervals such as when any
- file is closed so it is certainly not necessary to call this before powering
- down the system.
-
- MFS_CINVALID, invalidate all cache entries for the drive fscntl path resides
- on. This will be used by fsck (if I ever get it finished) so that a filesystem
- can be messed about with at a low level and the cache wont ever become out
- of sync with the physical filesystem (a recipe for disaster).
-
- MFS_FINVALID, invalidate all file descriptors for the drive fscntl resides on.
-
- MFS_IMODE, use 'arg' as an inode mode number to change the object pointed to
- by the fscntl path. This makes it possible to change directories to files and
- vice versa. If you aren't sure what that means do *not* use this option, you
- can trash filesystems with it !
-
- MFS_INFO, 'arg' points to an mfs_info structure, this has the following
- entries (with meanings) :
-
- long total_inodes,total_zones;
- long free_inodes,free_zones;
- int version; /* Filesystem version 1=V1 2=V2 */
- int increment; /* Directory increment */
- long res1,res2,res3,res4; /* Reserved for future use */
-
- 'int' is 16 bits in this context. 'increment' is a measure of the maximum
- filename length this is given by ((increment<<4)-2). This option is
- effectively a more relevant minixfs version of 'dfree'.
-
- MFS_GTRANS, the value 'arg' points to is set to the current translation
- options. (see MFS_STRANS).
-
- MFS_STRANS, the current translation options are set to the value 'arg'
- points to. Since these options are global (i.e. affect all programs), the
- calling process must be root to do it. Currently valid options are the
- following or'ed together :
-
- SRCH_TOS : when searching for files translate the name searched for and the
- name being matched to TOS 8+3 format, in tos domain. E.g. the
- filename 'LargeName.c' becomes LARGENAM.C and can be accessed as
- anything that gets translated to this, like LARgenamefile.C' .
- SRCH_MNT : as above but MiNT domain.
- DIR_TOS : when using Dreaddir in compatability mode (and Fsfirst/Fsnext)
- translates filename to TOS 8+3, tos domain only. In normal mode
- filenames are *never* translated. Without this option filenames
- longer than 12 characters will be truncated for Fsfirst/Fsnext.
- DIR_MNT : as above but MiNT domain.
- AEXEC_TOS : files with extensions TTP,TOS,APP,PRG,ACC,GTP are automatically
- given execute permissions in tos domain with this option
- (comparison is not case sensitive so works for ttp, TtP too).
- AEXEC_MNT : as above but MiNT domain.
- LWR_TOS : created filenames are translated to lower case in tos domain.
- LWR_MNT : as above but MiNT domain.
-
- The purpose of these options is to help programs expecting 8+3 filenames to
- work, e.g. the file selector. The default values for translation are in
- minixfs\config.h, in TRANS_DEFAULT. The translation modes are filesystem specific
- so you can have different modes on each drive. When a drive is changed the modes
- remain the same this is primarily so that hitting 'ESC' doesn't return a desktop
- window to the default mode. A sample program is supplied that allows these
- options to be set, see 'mfsconf.doc' for details.
-
- A few other options. SCACHE_SIZE and UCACHE_SIZE, these determine the
- size (in K) of the caches used for minixfs, don't make them smaller than about
- 10 or the filesystem performance will deterriorate considerably. Increase them
- by all means, this will reduce the amount of I/O required by the filesystem.
- SCACHE refers to the system cache which is called for 'internal' operations such
- as reading/writing directories and inodes. UCACHE is the user cache which
- contains user data (from reading/writing files). These are separated so that
- if a program does a lot of file I/O minix.xfs wont have to re-read directories
- for example. Since version 0.60 I've also added ICACHE_SIZE, this cache is for
- inodes only, it's primary purpose is to allow some of the speed optimisations
- to work. There is no real need to make it much bigger than the default size
- unless you have lots of files open simultaneously, when it will reduce I/O.
-
- The MAX_INCREMENT determines the maximum value which may be passed to the '-n'
- option when creating the filesystem with minit. Unless you are using long
- filename filesystems, this option is irrelevant. However if you are using them
- then minix.xfs will not read a filesystem whose directory increment is bigger
- than MAX_INCREMENT. MAX_INCREMENT should be a power of two between 1 and 16
- (inclusive), its default is 2 which allows up to 30 characters in a filename
- of a suitable filesystem, this should be more than adequate for most cases.
- For more information about the long filename filesystems read 'minit.doc'.
-
- I wouldn't recommend using the ROBUST compilation option any more. It causes
- lots of I/O and really slows the filesystem down a great deal. If your system
- crashes (or you reset/power it down) in the middle of minixfs file operations,
- fsck should be run to fix any problems (in fact you should do this at regular
- intervals anyway).
-
- A note about the code. It was written as independently as possible from minix,
- so any resemblances are entirely coincidental (well what would you call
- something that searches directories other than search_dir, or allocates
- bits in a bitmap other than alloc_bit ?). Naturally I had to look up the
- format of inodes/superblock and the disk layout and so some of the
- inode/superblock structures are the same. I could have changed all the names
- but this would have been pretty confusing for someone looking at the code
- that was familiar with the FS code in Minix, so I kept the originals as far
- as possible. Also please note filesystems are complex things to write and
- although I've tried to anticipate bugs it is possible one or two got through.
- If you spot *anything* that makes fsck in minix complain (other than symlinks
- in an unpatched fsck) please let me know and I'll try to fix any bugs asap.
-
- Now a few notes for future versions. Hopefully, now this is a separate
- filesystem, I should be able to upgrade/bugfix minix.xfs fairly independently
- of MiNT, so send and bugs/suggestions to the email below. However minix.xfs is
- not my number one priority and circumstances in the near future may make heavy
- demands on my time, so I can't guarantee immediate bugfixes or enhancements.
-
- I hope this program illustrates how useful installable filesystems are
- in MiNT, they could be easily used for other formats, such as Spectre or TT
- Unix (though not easily written!). I would be quite prepared to write such
- things, however there are two snags. Firstly I don't have access to the
- necessary information of the relevant filesystem format (or the software that
- uses them) and secondly I am not in a position to write such things free of
- charge. I'd be happy to discuss such things with any interested party, via
- either the email address below, phone or snail mail (or indeed any other
- programming projects).
-
- A few credits, thanks to :
-
- Eric R. Smith for MiNT and lots of helpful advice (not to mention re-writing
- minixfs to work as an installable filesystem).
-
- Andy S Tanenbaum. For writing Minix in the first place.
-
- Frans Meulenbroeks for the ST version of Minix.
-
- Also thanks to everyone who sent in bugs reports or suggestions to this and
- earlier versions of minixfs.
-
- Thanks must also go to everyone at Edinburgh University (and elsewhere) who
- supported the Tardis project which gave me net access up until August 1991,
- Tardis is sadly missed :-(
-
- Thanks to Steve Usher for his help with my previous email address.
-
- Thanks to Nyx for my current email.
-
- All comments/questions/bugfixes/suggestions/flames to :
-
- shenson@nyx.cs.du.edu
-
- Alternatively I can be reached via snail mail or telephone as :
-
- S. N. Henson,
- 4 Monaco Place,
- Westlands,
- Newcastle,
- Staffs. ST5 2QT.
- England.
-
- Phone :
- UK: (0782) 662808
- Elsewhere: +44 782 662808
-
- I cannot guarantee to reply to articles posted to comp.sys.atari.st and
- comp.sys.atari.st.tech . In fact I don't read these groups much at all
- at present, so any suggestions or bug reports are likely to never reach me
- if mentioned via Usenet. If you want to ensure you get a reply then
- USE EMAIL.
-